package com.appspot.eusms.notifications;

import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.SpannableStringBuilder;

import com.appspot.eusms.RoutingActivity;
import com.appspot.eusms.recipients.Recipient;
import com.appspot.eusms.recipients.Recipients;
import com.appspot.eusms.util.Util;

public class NotificationItem {

    private final Recipients recipients;
    private final Recipient individualRecipient;
    private final Recipients threadRecipients;
    private final long threadId;
    private final CharSequence text;
    private final Uri image;

    public NotificationItem(Recipient individualRecipient, Recipients recipients,
                            Recipients threadRecipients, long threadId,
                            CharSequence text, Uri image) {
        this.individualRecipient = individualRecipient;
        this.recipients = recipients;
        this.threadRecipients = threadRecipients;
        this.text = text;
        this.image = image;
        this.threadId = threadId;
    }

    public Recipient getIndividualRecipient() {
        return individualRecipient;
    }

    public String getIndividualRecipientName() {
        return individualRecipient.toShortString();
    }

    public CharSequence getText() {
        return text;
    }

    public Uri getImage() {
        return image;
    }

    public boolean hasImage() {
        return image != null;
    }

    public long getThreadId() {
        return threadId;
    }

    public CharSequence getBigStyleSummary() {
        return (text == null) ? "" : text;
    }

    public CharSequence getTickerText() {
        SpannableStringBuilder builder = new SpannableStringBuilder();
        builder.append(Util.getBoldedString(getIndividualRecipientName()));
        builder.append(": ");
        builder.append(getText());

        return builder;
    }

    public PendingIntent getPendingIntent(Context context) {
        Intent intent = new Intent(context, RoutingActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

        if (recipients != null || threadRecipients != null) {
            if (threadRecipients != null) intent.putExtra("recipients", threadRecipients);
            else intent.putExtra("recipients", recipients);

            intent.putExtra("thread_id", threadId);
        }

        intent.setData((Uri.parse("custom://" + System.currentTimeMillis())));

        return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    }

}
